<html>

	<head>
		<title>5.12.3 para 指令</title>
		<meta charset="utf-8" />
		<meta name="author" content="jfinal,yaolin" />
		<meta name="Keywords" content="" />
		<link rel="stylesheet" type="text/css" href="../../css/global.css" />
	</head>

	<body>
		<h1>5.12.3 para 指令</h1>
		<p>#para 指令用于生成 sql 中的问号占位符以及占位符所对应的参数， 两者分别生成在了 SqlPara 对象的 sql 和 paraList 对象之中。通过 SqlPara.getSql()与 SqlPara.getPara()可分别获取到 它们。 #para 指令需要与 java 后端的 getSqlPara()协同工作。</p>
		<p>#para 指令支持两种用法，一种是传入 int 型常量参数的用法， 如下示例展示的是 int 型常 量参数的用法：
		</p>
		<img src="../../images/ativeRecord/5.12.3.1.png" />
		<p>上图红色框中#para 指令传入了两个 int 型常量参数，所对应的 java 后端代码必须调用 getSqlPara(String key, <span class="red">Object… paras</span>)，如下是代码示例：</p>
		<img src="../../images/ativeRecord/5.12.3.2.png" />
		<p>以上 java 代码红色方框中的<span class="red"> 18 与 50 </span>这两个参数将被前面#sql 指令中定义的<span class="red">#para(0)与 #para(1)</span>所使用。 为#para 传入的 int 型常量值表示获取传入的参数的 index 下标值，上例中的 #para(0)对应下标为 0 的参数值 18，而#para(1)则对应下标为 1 的参数值 50</p>
		<p>#para 指令的另一种用法是传入<span class="red">除了 int 型常量以外</span>的任意类型参数， 如下是代码示例：</p>
		<img src="../../images/ativeRecord/5.12.3.3.png" />
		<p>与上例模板文件配套的 java 代码如下所示：</p>
		<img src="../../images/ativeRecord/5.12.3.4.png" />
		<p>上例代码获取到的 SqlPara对象 sp中封装的 sql为：select * from girl where age &gt; <span class="red">?</span> and weight &lt; <span class="red">?</span>， 封装的与 sql 问号占位符次序一致的参数列表值为： [18, 50]。</p>
		<p>以上两个示例， 获取到的 SqlPara 对象中的值完全一样。其中的 sql 值都为： select * from girl where age &gt; <span class="red">?</span> and weight &lt; <span class="red">?</span>， 其中的参数列表值也都为[18、 50]。 不同的是#para 用法不同，以 及它们对应的 java 代码传参方式不同，前者传入的是 Object… paras 参数，后者是 Map data 参 数。
		</p>
		<p>切记： #para 指令所在之处<span class="red">永远是生成一个问号占位符</span>，并不是参数的值，参数值被生成 在了 SqlPara 对象的 paraList 属性之中，通过 sqlPara.getPara()可获取。 如果想生成参数值用一 下模板输出指令即可：<span class="red"> #(value)</span></p>
	</body>

</html>